package com.stfalcon.chatkit.sample.task;

import android.os.AsyncTask;

import com.stfalcon.chatkit.sample.utils.AppSendRequest;
import com.stfalcon.chatkit.sample.utils.SharedPreferencesAtrribute;

/**
 * 异步请求抽象类
 */
public class AsyncRquest extends AsyncTask<Object, Object, String> {

    private String url;
    private String postValue;
    public AsyncRquest(String url, String postValue) {
        this.url = url;
        this.postValue = postValue;
    }

    /**
     * 后台运行的方法，可以运行非UI线程，可以执行耗时的方法
     * 这里的Void参数对应AsyncTask中的第一个参数
     * 这里的String返回值对应AsyncTask的第三个参数
     * 该方法并不运行在UI线程当中，主要用于异步操作，所有在该方法中不能对UI当中的空间进行设置和修改
     * 但是可以调用publishProgress方法触发onProgressUpdate对UI进行操作
     */
    @Override
    protected String doInBackground(Object... objects) {

        int i=0;
        while(i<objects.length){

            //publishProgress 更新进度，给onProgressUpdate()传递进度参数
            publishProgress(objects[i]);

            i++;

        }

        ;

        String result = AppSendRequest.postGetJson(url,postValue, SharedPreferencesAtrribute.getSharedPreferences().getString("token", ""));
        //第三个参数为String 所以此处return一个String类型的数据
        return result;

    }

    /**
     * 在publishProgress()被调用以后执行，publishProgress()用于更新进度
     * 这里的Intege参数对应AsyncTask中的第二个参数
     * 在doInBackground方法当中，，每次调用publishProgress方法都会触发onProgressUpdate执行
     * onProgressUpdate是在UI线程中执行，所有可以对UI空间进行操作
     */
    @Override
    protected void onProgressUpdate(Object... values)
    {
        //第二个参数为Int
    }
}